The Java 5 generics compromise orthogonality to keep compatibility
نویسندگان
چکیده
In response to a long-lasting anticipation by the Java community, version 1.5 of the Java 2 platform referred to as Java 5 introduced generic types and methods to the Java language. The Java 5 generics are a significant enhancement to the language expressivity because they allow straightforward composition of new generic classes from existing ones while reducing the need for a plethora of type casts. While the Java 5 generics are expressive, the chosen implementation method, type erasure, has triggered undesirable orthogonality violations. This paper identifies six cases of orthogonality violations in the Java 5 generics and demonstrates how these violations are mandated by the use of type erasure. The paper also compares the Java 5 cases of orthogonality violations to compatible cases in C# 2 and NextGen 2 and analyzes the trade-offs in the three approaches. The conclusion is that Java 5 users face new challenges: a number of generic type expressions are forbidden, while others that are allowed are left unchecked.
منابع مشابه
Subtyping in Java with Generics and Wildcards is a Fractal
While developing their software, professional object-oriented (OO) software developers keep in their minds an image of the subtyping relation between types in their software. The goal of this paper is to present an observation about the graph of the subtyping relation in Java, namely the observation that, after the addition of generics—and of wildcards, in particular—to Java, the graph of the s...
متن کاملThe Soundness of Component NextGen
This technical report presents a type soundness proof for Core CGen, a small, formal language designed for studying the addition of a component system based on genericity to a nominally typed objectoriented language supporting first-class generics. Core CGen captures the most intricate aspects of the Component NextGen programming language, an extension of the NextGen architecture that provides ...
متن کاملMultiJava, JML, and Generics
The goal of this semester project is to extend the already existing support for generics in the MultiJava compiler by implementing special features of Java generics on top of it, namely wildcards and raw types, while also making the necessary modifications to JML. To that end, we will give a brief overview of Java generics and describe the main design decisions behind its specification before p...
متن کاملVerification of Java Programs with Generics
Several proof systems allow the formal verification of Java programs, and a specification language was specifically designed for Java. However, none of these systems support generics that were introduced in Java 5. Generics are very important and useful when the collection framework (lists, sets, hash tables etc.) is used. Though they are mainly dealt with at compile time, they have some effect...
متن کاملType Inference for Java 5 Wildcards, F-Bounds, and Undecidability
We consider the problem of type checking for Java 5 with generics and wildcard types. Java supports type inference for methods with type parameters, but its presentation in the Java Language Specification lacks both clarity and a sense for how inference fits into the larger picture of Java’s type system. We show, in contrast, how this type inference can be cleanly integrated with subtyping of w...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
- Journal of Systems and Software
دوره 81 شماره
صفحات -
تاریخ انتشار 2008